﻿#ifndef _OI_PLSCANNERCORE_PCH_HPP_
#define _OI_PLSCANNERCORE_PCH_HPP_

#include <QtGui/QtGui>
#include <QtConcurrent/QtConcurrent>
#include <opencv2/opencv.hpp>
#include <xlsxdocument.h>

#include "Base/OiGlobals.hpp"
#include "Base/OiDefines.hpp"
#include "Core/OiLocator.hpp"
#include "Core/OiSettings.hpp"
#include "Core/OiImage.hpp"
#include "Ctrl/OiTouchInput.hpp"


#include "Flow/OiOperator.hpp"
#include "Flow/OiFactory.hpp"
#include "Flow/OiProgram.hpp"
#include "Flow/OiContext.hpp"
#include "Flow/OiInterpreter.hpp"
#include "Flow/OiEnvironment.hpp"

#include "Util/OiModbus.hpp"
#include "Util/OiPLC.hpp"
#include "Util/OiOPC.hpp"

#include "Appl/OiProgGauges.hpp"
#include "Appl/OiProgOutput.hpp"
#include "Appl/OiProgDetail.hpp"
#include "Appl/OiProgDefine.hpp"
#include "Appl/OiProgViewer.hpp"
#include "Appl/OiOperStudio.hpp"

#include "Appl/OiOperDrawer.hpp"
#include "Appl/OiOperViewer.hpp"
#include "Appl/OiOperDetail.hpp"
#include "Appl/OiOperFiller.hpp"
#include "Appl/OiOperParams.hpp"
#include "Appl/OiOperBinder.hpp"

#include <QtCharts/QChart>
#include <QtCharts/QLineSeries>
#include <QtCharts/QSplineSeries>
#include <QtCharts/QScatterSeries>
#include <QtCharts/QValueAxis>

#include "OiPLScannerCore.hpp"
#include "OiPLScannerDefined.hpp"
#include "OiPLScannerError.hpp"
#include "OiPLScannerWorker.hpp"
#include "OiMessageOutput.hpp"
#include "OiValueLabel.hpp"
#include "OiToolLabel.hpp"

#include "Style/OiPLScannerStyle.hpp"

#include "Util/OiCommunicationTask.hpp"
#include "Util/OiEthernetTask.hpp"
#include "Util/OiOPCTask.hpp"

#include "Config/OiProductDlg.hpp"
#include "Config/OiProductWidget.hpp"
#include "Config/OiProductParams.hpp"
#include "Config/OiProductStatus.hpp"

#include "Output/OiPLScannerOutput.hpp"

#include "DataBase/OiDatabase.hpp"

#include "View/OiLineView.hpp"
//#include "View/OiDiffView.hpp"
#include "View/OiProfilesChart.hpp"
#include "View/OiProfilesView.hpp"
#include "View/OiDynamicSplineChart.hpp"
#include "View/OiDynamicSplineView.hpp"
#include "View/OiToolProfilesView.hpp"
#include "View/OiDefinitionEditDlg.hpp"
#include "View/OiValueInDateChart.hpp"

#include "Calib/OiCalibWidget.hpp"
#include "Calib/OiWideCalibWidget.hpp"

#include "Motor/OiMotor.hpp"

#include "Camera/OiAcquire.hpp"
#include "Camera/OiDevice.hpp"

#include "Settings/OiSettingsDlg.hpp"
#include "Settings/OiGuideProductDlg.hpp"
#include "User/OiUserManage.hpp"
#include "User/OiUserManageDlg.hpp"

#include "PLScannerUtil.hpp"
#include "Algorithms.hpp"

#undef QT_BEGIN_MOC_NAMESPACE
#undef QT_END_MOC_NAMESPACE

#define QT_BEGIN_MOC_NAMESPACE namespace Oi { namespace PLScannerCore {
#define QT_END_MOC_NAMESPACE } }

#define OiAlarm() qWarning().nospace().noquote() << "S<<"

#define OiCAlarm(Str) QMetaObject::invokeMethod(Core::OiGetMainWindow(), "clearAlarm", Qt::AutoConnection, Q_ARG(const QString&, Str))

#define OiShowMessage(Value) QMetaObject::invokeMethod(Core::OiGetMainWindow(), "showStatusMsg", Qt::AutoConnection, Q_ARG(const QString&, Value))

#define OiProgress(Value) QMetaObject::invokeMethod(Core::OiGetMainWindow(), "setProgressValue", Qt::AutoConnection, Q_ARG(const int, Value))

#endif
